nwn2fandomcom-20200214-history
Dominate Person
Description The target person temporarily becomes a faithful and loyal servant of the caster. A remove disease spell will remove the effects and return the target to normal. Notes If the last member of a group is dominated, this particular enemy will be instant-killed right away, allowing the player to exploit this spell for instant kills. This is also true for the spells Control Undead, Dominate Monster, and Dominate Animal. The behaviour is intentional and is defined in the creature objects' Heartbeat script (gb_assoc_heart). However, originally, the script nw_g0_dominate was supposed to be used, Obsidian probably just forgot to fix this. Can be fixed by changing the file nwn2_scriptsets.2da. Note that the campaign must allow this behaviour (NWN2 original campaign does allow it). So how does one know if a particular enemy is a member of a group or not? In general, if the player party is attacked by several enemies, the Obsidian scripters put them together in groups for convenience, where a single group leader controls the entire group, navigating it around the battlefield and assigning orders to the rest of the group, much like the player party (with the player being the leader). If you terminate all members of a group but one and then cast any of the spells mentioned above on the remaining member, EffectDeath is applied immediately to this enemy and he just drops dead. Some group examples from the original campaign: *Arval shadow priest group (Bruce Tomb, Blacklake District) *Luskan assassins (Night Vigil, Solace Glade) *Gith Sword Stalker (Gith caves during Shandra abduction) *Old Scab, Naylie, Ketts during Aldanon abduction (Aldanon Manor, Blacklake District) Note that there are exceptions: For example, Zeeaire and her bodyguards are NOT members of a group and thus this trick won't work on her. It really depends on scripting of a particular fight. You can gain more information from looking at the scripts in the toolset or simply by trying this trick out, if it doesn't work, then obviously the enemy in question is not a member of a group. Bugs * Targets already affected by other states like Sleep or Paralyze cannot be dominated. Some states like Frightened and Dominated do stack, but others like Sleep and Dominated do not. Players acquainted with the toolset should loop through the effects on the current target and remove all conflicting effects prior to applying the Domination effect: effect eEffect = GetFirstEffect(oTarget); while(GetIsEffectValid(eEffect)) { if(GetEffectType(eEffect) EFFECT_TYPE_SLEEP || GetEffectType(eEffect) EFFECT_TYPE_PARALYZE || GetEffectType(eEffect) EFFECT_TYPE_STUNNED || GetEffectType(eEffect) EFFECT_TYPE_CONFUSED || GetEffectType(eEffect) EFFECT_TYPE_DAZED || GetEffectType(eEffect) EFFECT_TYPE_INSANE) RemoveEffect(oTarget, eEffect); eEffect = GetNextEffect(oTarget); } All others should awaken sleeping enemies by dealing some damage to them before dominating them. * There is also a problem if the Domination effect is applied first and Paralysis effect second. Suppose, an enemy is dominated and then a former ally of the enemy casts Hold Monster on the dominated enemy. The Paralysis effect REPLACES the domination effect, meaning the dominated creature is un-dominated and returns to its original faction as long as paralysis is in effect. When the paralysis effect wears off (or the paralysed creature succeeds on its save), the enemy is immediately and automatically re-dominated, unless the domination effect has worn off by then either. However, this is not exactly satisfying, as paralysed dominated enemies won't be attacked by their former allies, who will instead concentrate on the dominator again, which effectively turns Dominate spells into some kind of Charm spells, thus reducing their effectiveness. So it is probably best to prevent paralysis from taking effect on dominated creatures, because it disrupts domination, which is not supposed to happen. It is possible to replace paralysis by some other effect like the Stun effect, which does not conflict with domination. Keep in mind, however, that no other effect can replicate the paralysis effect to full degree, as each effect works differently. Example for Hold Monster spell script (NW_S0_HoldMon): //first, check if target is dominated, if yes, define paralysis as Stun to avoid conflict with dominate effect: effect eEffect = GetFirstEffect(oTarget); while (GetIsEffectValid(eEffect) && GetEffectType(eParal)!=EFFECT_TYPE_STUNNED) { if( GetEffectType(eEffect) EFFECT_TYPE_DOMINATED) { eParal = EffectStunned(); eHit = EffectVisualEffect(VFX_DUR_STUN); } eEffect = GetNextEffect( oTarget ); } //next, check what loop above returned, if target is not dominated, apply standard paralysis effect, otherwise skip if(GetEffectType(eParal)!=EFFECT_TYPE_STUNNED) { eParal = EffectParalyze(nSaveDC, SAVING_THROW_WILL); eHit = EffectVisualEffect( VFX_DUR_SPELL_HOLD_MONSTER ); } eParal = EffectLinkEffects(eParal, eHit); //now that the effect has been defined, run Resist and Save checks and apply effect if checks fail... *Poison will dispel the domination effect due to the way poison works in NWN2. Technically, poisoned targets apply poison damage to themselves. Domination effect is broken if any member of the dominator faction performs a hostile action on the dominated creature. When a creature is poisoned, it becomes a member of the dominator faction (basically being added as a henchmen), so if it deals damage to itself, it counts as a hostile action and the domination is broken. This is an important consideration in the Storm of Zehir campaign, where many enemies are equipped with weapons that are poisoned with Tsous Tsous and Blood of Zehir poison. These weapons deal magical damage to the target, and since technically, the damage application is performed by the victim to themselves, the domination effect is broken on first hit. To fix, the scripts need to check who actually applied the poison effect and use the original poison effect creator to apply the damage. Check the scripts nx2_s0_1tsous.nss, nx2_s0_2tsous.nss, and nx2_s0_blood.NSS. The effect creator is determined by looping through all effects currently on the creature and comparing them to: GetEffectType(eEffect) EFFECT_TYPE_POISON and GetEffectInteger(eEffect,0) 47 for Tsous Tsous poison (row 47 in poison.2da) and GetEffectInteger(eEffect,0) 48 for Blood of Zehir poison (row 48 in poison.2da). The effect creator is then the GetEffectCreator(eEffect). Use AssignCommand() to assign the command to the effect creator to damage the victim. This will preserve the domination effect.